#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
#define MAX_N 10000
int dp[MAX_N + 5];

int main()
{
    int n;
    cin >> n;
    memset(dp, 0x3f3f3f3f, sizeof dp);
    int i;
    dp[0] = 0;
    for(i = 1; i <= sqrt(n); i++)
    {
        for(int j = 0; j <= n; j++)
        {
            if(j < i * i) continue;
            dp[j] = min(dp[j], dp[j - i * i] + 1);
        }
    }
    cout << dp[n];
    return 0;
}